home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-16 | 12.8 KB | 472 lines | [TEXT/CCL2] |
-
- (in-package :traps) ;
- ; Created: Sunday, January 6, 1991 at 10:47 PM
- ; Memory.p
- ; Pascal Interface to the Macintosh Libraries
- ;
- ; Copyright Apple Computer, Inc. 1985-1990
- ; All rights reserved
- ;
-
- ;;;;;;;;;;;;;
- ;
- ; Modification History
- ;
- ; 04/28/93 mwp Release
- ; 08/10/92 bill typo in _HLockHi
- ; Package prefix for ccl::%ptr-to-int in _deferuserfn
- ; ------------- 2.0
- ; 02/18/92 gb's fix to _GetPhysical
- ; _MaxMem now works as advertised in Inside Macintosh
- ; ------------- 2.0f2
- ; 08/23/91 bill _PageFaultFatal had a bogus arg in its call form
- ; Fix _StripAddress, _SystemZone, _ApplicZone,
- ; _ApplicationZone, _TopMem
- ;
-
- ; $IFC UNDEFINED UsingIncludes
- ; $SETC UsingIncludes := 0
- ; $ENDC
-
- ; $IFC NOT UsingIncludes
-
- ; $ENDC
-
- ; $IFC UNDEFINED UsingMemory
- ; $SETC UsingMemory := 1
-
- ; $I+
- ; $SETC MemoryIncludes := UsingIncludes
- ; $SETC UsingIncludes := 1
- ; $IFC UNDEFINED UsingTypes
-
- (require-interface 'TYPES) ; $I $$Shell(PInterfaces)Types.p
- ; $ENDC
- ; $SETC UsingIncludes := MemoryIncludes
-
- (defconstant $maxSize #x800000) ; Max data block size is 8 megabytes
- (defconstant $defaultPhysicalEntryCount 8)
-
- ; values returned from the GetPageState function
- (defconstant $kPageInMemory 0)
- (defconstant $kPageOnDisk 1)
- (defconstant $kNotPaged 2)
-
- (def-mactype :size (find-mactype :signed-long)); size of a block in bytes
-
- (def-mactype :thz (find-mactype :pointer))
- (defrecord Zone
- (bkLim :pointer)
- (purgePtr :pointer)
- (hFstFree :pointer)
- (zcbFree :signed-long)
- (gzProc :pointer)
- (moreMast :signed-integer)
- (flags :signed-integer)
- (cntRel :signed-integer)
- (maxRel :signed-integer)
- (cntNRel :signed-integer)
- (maxNRel :signed-integer)
- (cntEmpty :signed-integer)
- (cntHandles :signed-integer)
- (minCBFree :signed-long)
- (purgeProc :pointer)
- (sparePtr :pointer)
- (allocPtr :pointer)
- (heapData :signed-integer)
- )
-
- (defrecord MemoryBlock
- (address :pointer)
- (count :signed-long)
- )
-
- (defrecord LogicalToPhysicalTable
- (logical :memoryblock)
- (physical (:array :memoryblock 8))
- )
-
- (def-mactype :pagestate (find-mactype :signed-integer))
- (def-mactype :statusregistercontents (find-mactype :signed-integer))
-
-
- (deftrap _getappllimit nil
- (:no-trap :pointer)
- (:no-trap (%get-signed-long (%int-to-ptr 304))))
-
- (deftrap _getzone nil
- (:a0 (:pointer :zone))
- (:stack-trap #xA11A))
-
- (deftrap _systemzone nil
- (:no-trap (:pointer :zone))
- (:no-trap (%get-ptr (%int-to-ptr 678))))
-
- (deftrap _appliczone nil
- (:no-trap (:pointer :zone))
- (:no-trap (%get-ptr (%int-to-ptr 682))))
-
- (deftrap _applicationzone nil
- (:no-trap (:pointer :zone))
- (:no-trap (%get-ptr (%int-to-ptr 682))))
-
- (deftrap _newhandle ((bytecount :signed-long))
- (:a0 :handle)
- (:register-trap #xA122 :d0 bytecount))
-
- (deftrap _handlezone ((h :handle))
- (:a0 (:pointer :zone))
- (:register-trap #xA126 :a0 h))
-
- (deftrap _recoverhandle ((p :pointer))
- (:a0 :handle)
- (:register-trap #xA128 :a0 p))
-
- (deftrap _newptr ((bytecount :signed-long))
- (:a0 :pointer)
- (:register-trap #xA11E :d0 bytecount))
-
- (deftrap _ptrzone ((p :pointer))
- (:a0 (:pointer :zone))
- (:register-trap #xA148 :a0 p))
-
- (deftrap _gzsavehnd nil
- (:no-trap :handle)
- (:no-trap (%get-signed-long (%int-to-ptr 808))))
-
- (deftrap _topmem nil
- (:no-trap :pointer)
- (:no-trap (%get-ptr (%int-to-ptr 264))))
-
- (deftrap _maxblock nil
- (:d0 :signed-long)
- (:register-trap #xA061))
-
- (deftrap _stackspace nil
- (:d0 :signed-long)
- (:register-trap #xA065))
-
- (deftrap _newemptyhandle nil
- (:a0 :handle)
- (:register-trap #xA166))
-
- (deftrap _hlock ((h :handle))
- nil
- (:register-trap #xA029 :a0 h))
-
- (deftrap _hunlock ((h :handle))
- nil
- (:register-trap #xA02A :a0 h))
-
- (deftrap _hpurge ((h :handle))
- nil
- (:register-trap #xA049 :a0 h))
-
- (deftrap _hnopurge ((h :handle))
- nil
- (:register-trap #xA04A :a0 h))
-
- (deftrap _hlockhi ((h :handle))
- nil
- (:no-trap (ccl:register-trap #xA029 :a0 (ccl:register-trap #xA064 :a0 h))))
-
- (deftrap _stripaddress ((theaddress :pointer))
- (:d0 :long)
- (ccl:%int-to-ptr (:register-trap #xA055 :d0 (ccl:%ptr-to-int theaddress))))
- ; $ENDC
-
- (deftrap _translate24to32 ((addr24 :pointer))
- (:d0 :pointer)
- (:register-trap #xA091 :d0 addr24))
-
- (deftrap _tempnewhandle ((logicalsize :signed-long) (resultcode (:pointer :signed-integer)))
- (:stack :handle)
- (:stack-trap #xA88F logicalsize resultcode (29 :signed-integer)))
-
- (deftrap _tempmaxmem ((grow (:pointer :signed-long)))
- (:stack :signed-long)
- (:stack-trap #xA88F grow (21 :signed-integer)))
-
- (deftrap _tempfreemem nil
- (:stack :signed-long)
- (:stack-trap #xA88F (24 :signed-integer)))
-
- ; Temporary Memory routines renamed, but obsolete, in System 7.0 and later.
-
- (deftrap _temphlock ((h :handle) (resultcode (:pointer :signed-integer)))
- nil
- (:stack-trap #xA88F h resultcode (30 :signed-integer)))
-
- (deftrap _temphunlock ((h :handle) (resultcode (:pointer :signed-integer)))
- nil
- (:stack-trap #xA88F h resultcode (31 :signed-integer)))
-
- (deftrap _tempdisposehandle ((h :handle) (resultcode (:pointer :signed-integer)))
- nil
- (:stack-trap #xA88F h resultcode (32 :signed-integer)))
-
- (deftrap _temptopmem nil
- (:stack :pointer)
- (:stack-trap #xA88F (22 :signed-integer)))
-
- ; Temporary Memory routines as they were known before System 7.0.
-
- (deftrap _mfmaxmem ((grow (:pointer :signed-long)))
- (:stack :signed-long)
- (:stack-trap #xA88F grow (21 :signed-integer)))
-
- (deftrap _mffreemem nil
- (:stack :signed-long)
- (:stack-trap #xA88F (24 :signed-integer)))
-
- (deftrap _mftempnewhandle ((logicalsize :signed-long) (resultcode (:pointer :signed-integer)))
- (:stack :handle)
- (:stack-trap #xA88F logicalsize resultcode (29 :signed-integer)))
-
- (deftrap _mftemphlock ((h :handle) (resultcode (:pointer :signed-integer)))
- nil
- (:stack-trap #xA88F h resultcode (30 :signed-integer)))
-
- (deftrap _mftemphunlock ((h :handle) (resultcode (:pointer :signed-integer)))
- nil
- (:stack-trap #xA88F h resultcode (31 :signed-integer)))
-
- (deftrap _mftempdisposhandle ((h :handle) (resultcode (:pointer :signed-integer)))
- nil
- (:stack-trap #xA88F h resultcode (32 :signed-integer)))
-
- (deftrap _mftopmem nil
- (:stack :pointer)
- (:stack-trap #xA88F (22 :signed-integer)))
-
- (deftrap _initapplzone nil
- nil
- (:stack-trap #xA02C))
-
- (deftrap _initzone ((pgrowzone :pointer) (cmoremasters :signed-integer) (limitptr :pointer) (startptr :pointer))
- (:no-trap :signed-integer)
- (:no-trap (ccl:%stack-block ((p 14))
- (%put-ptr p startptr 0)
- (%put-ptr p limitptr 4)
- (%put-word p cmoremasters 8)
- (%put-ptr p pgrowzone 10)
- (ccl:register-trap #xA019 :a0 p (:signed-integer :d0)))))
-
- (deftrap _setzone ((hz (:pointer :zone)))
- nil
- (:register-trap #xA01B :a0 hz))
-
- (deftrap _compactmem ((cbneeded :signed-long))
- (:d0 :signed-long)
- (:register-trap #xA04C :d0 cbneeded))
-
- (deftrap _purgemem ((cbneeded :signed-long))
- nil
- (:register-trap #xA04D :d0 cbneeded))
-
- (deftrap _purgememsys ((cbneeded :signed-long))
- nil
- (:register-trap #xA44D :d0 cbneeded))
-
- (deftrap _freemem () (:d0 :signed-long) (:register-trap 40988))
-
-
- (deftrap _resrvmem ((cbneeded :signed-long))
- nil
- (:register-trap #xA040 :d0 cbneeded))
-
- (deftrap _reservemem ((cbneeded :signed-long))
- nil
- (:register-trap #xA040 :d0 cbneeded))
-
- (deftrap _reservememsys ((cbneeded :signed-long))
- nil
- (:register-trap #xA440 :d0 cbneeded))
-
- ; Note: GROW will always be set to 0 when this is called from MCL.
- (deftrap _maxmem ((grow (:pointer :signed-long)))
- (:no-trap :long)
- (:no-trap
- (ccl:%stack-block ((ret 8))
- (ccl:%gen-trap 41245 :return-block ret '(:a0 :d0))
- (%put-long grow (%get-long ret))
- (%get-long ret 4))))
-
- (deftrap _setgrowzone ((growzone :pointer))
- nil
- (:register-trap #xA04B :a0 growzone))
-
- (deftrap _setappllimit ((zonelimit :pointer))
- nil
- (:register-trap #xA02D :a0 zonelimit))
-
- (deftrap _movehhi ((h :handle))
- nil
- (:register-trap #xA064 :a0 h))
-
- (deftrap _disposptr ((p :pointer))
- nil
- (:register-trap #xA01F :a0 p))
-
- (deftrap _disposeptr ((p :pointer))
- nil
- (:register-trap #xA01F :a0 p))
-
- (deftrap _getptrsize ((p :pointer))
- (:d0 :signed-long)
- (:register-trap #xA021 :a0 p))
-
- (deftrap _setptrsize ((p :pointer) (newsize :signed-long))
- nil
- (:register-trap #xA020 :a0 p :d0 newsize))
- (deftrap _disposhandle ((h :handle))
- nil
- (:register-trap #xA023 :a0 h))
-
- (deftrap _disposehandle ((h :handle))
- nil
- (:register-trap #xA023 :a0 h))
-
- (deftrap _gethandlesize ((h :handle))
- (:d0 :signed-long)
- (:register-trap #xA025 :a0 h))
- (deftrap _sethandlesize ((h :handle) (newsize :signed-long))
- nil
- (:register-trap #xA024 :a0 h :d0 newsize))
- (deftrap _emptyhandle ((h :handle))
- nil
- (:register-trap #xA02B :a0 h))
-
- ; Warning. Assuming that (logicalsize long word) matches (bytecount :signed-long) in trap reallochandle
- (deftrap _reallochandle ((h :handle) (bytecount :signed-long))
- nil
- (:register-trap #xA027 :a0 h :d0 bytecount))
- (DEFTRAP _REALLOCATEHANDLE ((H :HANDLE) (BYTECOUNT :SIGNED-LONG))
- NIL
- (:REGISTER-TRAP #xA027 :A0 H :D0 BYTECOUNT))
- (deftrap _hsetrbit ((h :handle))
- nil
- (:register-trap #xA067 :a0 h))
-
- (deftrap _hclrrbit ((h :handle))
- nil
- (:register-trap #xA068 :a0 h))
-
- (deftrap _moremasters nil
- nil
- (:stack-trap #xA036))
-
- (deftrap _blockmove ((srcptr :pointer) (destptr :pointer) (bytecount :signed-long))
- nil
- (:register-trap #xA02E :a0 srcptr :a1 destptr :d0 bytecount))
- (deftrap _memerror nil
- (:no-trap :signed-integer)
- (:no-trap (%get-signed-word (%int-to-ptr 544))))
-
- ; Warning. Register trap purgespace returns multiple values: ((:a0 (contig long word)) (:d0 (total long word)))
- (DEFTRAP _PURGESPACE ((TOTAL (:POINTER :SIGNED-LONG))
- (CONTIG (:POINTER :SIGNED-LONG)))
- ((:A0 :SIGNED-LONG) (:D0 :SIGNED-LONG))
- (MULTIPLE-VALUE-BIND (TOTAL-VALUE CONTIG-VALUE) (:REGISTER-TRAP 41314)
- (%PUT-LONG TOTAL TOTAL-VALUE)
- (%PUT-LONG CONTIG CONTIG-VALUE)))
-
- (deftrap _hgetstate ((h :handle))
- (:d0 :signed-byte)
- (:register-trap #xA069 :a0 h))
- (deftrap _hsetstate ((h :handle) (flags :signed-byte))
- nil
- (:register-trap #xA06A :a0 h :d0 flags))
- (deftrap _setapplbase ((startptr :pointer))
- nil
- (:register-trap #xA057 :a0 startptr))
-
- (deftrap _maxapplzone nil
- nil
- (:stack-trap #xA063))
-
- (deftrap _holdmemory ((address :pointer) (count :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 0))
-
- (deftrap _unholdmemory ((address :pointer) (count :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 1))
-
- (deftrap _lockmemory ((address :pointer) (count :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 2))
-
- (deftrap _lockmemorycontiguous ((address :pointer) (count :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 4))
-
- (deftrap _unlockmemory ((address :pointer) (count :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 3))
-
- (deftrap _getphysical ((addresses (:pointer :logicaltophysicaltable))
- (physicalentrycount (:pointer :signed-long)))
- (:no-trap :signed-integer)
- (:no-trap (ccl::%stack-block ((ret 8))
- (ccl::%gen-trap #xA15C :return-block ret
- :d0 5
- :a1 (%get-ptr physicalentrycount)
- :a0 addresses
- '(:d0 :a0))
- (%put-ptr physicalentrycount (%get-ptr ret 4))
- (%get-word ret 2))))
-
- (deftrap _deferuserfn ((userfunction :pointer) (argument :pointer))
- (:d0 :signed-integer)
- (:register-trap #xA08F :a0 userfunction :d0 (ccl::%ptr-to-int argument)))
-
- (deftrap _debuggergetmax nil
- (:d0 :signed-long)
- (:register-trap #xA08D :d0 0))
-
- (deftrap _debuggerenter nil
- nil
- (:register-trap #xA08D :d0 1))
-
-
- (deftrap _debuggerexit nil
- nil
- (:register-trap #xA08D :d0 2))
-
- (deftrap _debuggerpoll nil
- nil
- (:register-trap #xA08D :d0 3))
-
- (deftrap _getpagestate ((address :pointer))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :d0 4))
-
- (deftrap _pagefaultfatal nil
- (:d0 :boolean)
- (:register-trap #xA08D :d0 5))
-
- (deftrap _debuggerlockmemory ((address :pointer) (count :signed-long))
- (:d0 :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 6))
-
- (deftrap _debuggerunlockmemory ((address :pointer) (count :signed-long))
- (:stack :signed-integer)
- (:register-trap #xA08D :a0 address :a1 (%int-to-ptr count) :d0 7))
-
- (deftrap _entersupervisormode nil
- (:d0 :signed-integer)
- (:register-trap #xA08D :d0 8))
-
-
- ; $ENDC ; UsingMemory
-
- ; $IFC NOT UsingIncludes
-
- ; $ENDC
-
-
- (export '($knotpaged $kpageondisk $kpageinmemory $defaultphysicalentrycount
- $maxsize))
- (provide-interface 'MEMORY)
-